package cn.fansunion.leecode.math;

/**
 * @author wen.lei@brgroup.com
 *
 *         2022-2-23
 */
public class MathPower {

    /**
     * 判定一个数n是否为某个数a的b次方。PowerOfThree,PowerOfFour，本质都是PowerOfN。
     * 
     * @param num
     * @param n
     */
    public boolean powerOfN(int n, int a) {
        if (n <= 0) {
            return false;
        }
        if (n == 1) {
            return true;
        }
        // >=a
        while (n >= a) {
            if (n % a == 0) {
                n = n / a;
            } else {
                return false;
            }
        }
        // 1
        return n == 1;
    }

    /**
     * Math.pow(a,b)，支持整数,b>=0;2的3次方=8
     * 
     * @param a
     * @param b
     * @return
     */
    public int pow(int a, int b) {
        if (b < 0) {
            throw new IllegalArgumentException("b<0");
        }
        if (b == 0) {
            return 1;
        }
        int n = 1;
        for (int index = 0; index < b; index++) {
            n = n * a;
        }
        return n;
    }
}
